package com.molichuxing.services.infrastructure.service;

import com.molichuxing.framework.service.RootService;
import com.molichuxing.services.infrastructure.dto.request.create.UserDetailCreateDto;
import com.molichuxing.services.infrastructure.dto.request.modify.UserDetailModifyDto;
import com.molichuxing.services.infrastructure.dto.response.UserDetailDto;

import java.util.List;
import java.util.Map;

/**
 * @author liyg
 * 用户详情服务
 * 2019-08-13
 */
public interface UserDetailService extends RootService {

    /**
     * 获取用户详情信息
     *
     * @param userId 用户id
     * @return
     */
    UserDetailDto getUserDetail(Integer userId);

    /**
     * 获取用户详情信息
     *
     * @param userIds 用户ids
     * @return
     */
    Map<Integer, UserDetailDto> getUserDetails(List<Integer> userIds);

    /**
     * 保存用户详情信息
     *
     * @param createDto
     * @return
     */
    Boolean create(UserDetailCreateDto createDto);

    /**
     * 修改用户详情信息
     *
     * @param modifyDto
     * @return
     */
    Boolean modifyRegionId(UserDetailModifyDto modifyDto);

    /**
     * 修改用户详情信息
     *
     * @param modifyDto
     * @return
     */
    Boolean modifyBirthday(UserDetailModifyDto modifyDto);

    /**
     * 查询所有付过款的用户
     *
     * @return
     */
    public Integer getPayUserCount();

    /**
     * 将用户置为已支付
     *
     * @return
     */
    int modifyUserPayByUserId(Integer userId);

    /**
     * 修改用户地址
     *
     * @param regionId
     * @param userId
     * @return
     */
    Boolean modifyRegionIdById(Integer regionId, Integer userId);

    /**
     * 查询性别分布统计
     *
     * @param isPay 是否支付过
     * @return
     */
    List<Map<String, Object>> getSexDistribution(Boolean isPay);

    /**
     * 查询用户年龄
     *
     * @param isPay 是否支付过
     * @return
     */
    List<Map<String, Object>> getAllAge(Boolean isPay);
}
